package com.ourway.service;

import com.ourway.dtos.DepartmentDTO;
import com.ourway.entity.FeiShuDepartment;
import com.ourway.entity.FeiShuDepartmentSync;
import com.ourway.entity.vo.PageResultDto;
import org.json.JSONException;

import java.util.List;

/**
 * 部门接口服务
 *
 * @author liuweiheng
 * @since 2021/12/11
 */
public interface IDepartmentService {

    /**
     * 获取树结构
     * @return 根节点
     */
    DepartmentDTO getTree();

    /**
     * 获取同步信息
     * @param departmentId 部门ID
     * @return 同步信息
     */
    FeiShuDepartmentSync getSyncInfoByDeptId(String departmentId);

    /**
     * 根据ID获取部门信息
     * @return 部门信息
     */
    DepartmentDTO getByDeptId(String departmentId);

    /**
     * 根据飞书部门ID获取飞书部门信息
     * @param feishuOpenDepartmentId 飞书部门ID
     * @return 飞书部门信息
     */
    FeiShuDepartment getFeiShuDeptByOpenDeptId(String feishuOpenDepartmentId);

    /**
     * 获取部门列表
     * @param pageIndex 页数
     * @param pageSize 每页总量
     * @return 部门列表
     */
    PageResultDto<DepartmentDTO> getDeptList(int pageIndex, int pageSize);

    /**
     * 创建部门
     * @param param 部门信息
     * @return true | false
     */
    Boolean creteDept(DepartmentDTO param) throws JSONException;

    /**
     * update
     * @param departmentDTO dto
     * @return true | false
     */
    Boolean update(DepartmentDTO departmentDTO);

    /**
     * 删除
     * @param departmentDTO dto
     * @return true | false
     */
    Boolean delete(DepartmentDTO departmentDTO);
}
